/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.creature.monster.plugin;

import java.awt.Image;
import model.creature.DamageableCreature;
import model.creature.monster.DefaultHealerMonster;
import model.creature.monster.Monster;
import model.game.GameInterface;
import model.map.cell.Cell;
import model.utility.ImageUtility;

/**
 * Heals fellow monsters 30 each turn.
 * @author Reinhard
 */
public class Sheep extends DefaultHealerMonster {

    public Sheep(GameInterface game, Cell cell){
        super(game,cell);
    }

    @Override
    public int getSpeed() {
        return 2;
    }

    @Override
    public int getMaxHP() {
        return 120;
    }

    @Override
    public String getName() {
        return "Sheep";
    }
    @Override
    public String getDescription() {
      return "Heals its allies.";
    }


    @Override
    public Image getImage() {
        return ImageUtility.loadImage("resources/pictures/monster/sheep/sheep.png");
    }

    @Override
    public int getPower() {
        return 0;
    }


  /**
   * Retrieves heal distance
   */
  @Override
  public int healDistance() {
    return 1;
  }

  /**
   * Retrieves heal count (monsters healed at a time)
   */
  @Override
  public int getHealCount() {
    return 1;
  }

  /**
   * do THIS monster WANT TO heal crt?
   */
  public boolean canHeal(DamageableCreature crt) {
    if (!(crt instanceof Monster)) return false;
    if (crt.getHP() == crt.getMaxHP()) return false;
    if (crt == this) return false; // can't heal self
    return true;
  }

  /**
   * How much can this monster heal?
   */
  public int getHealValue() {
    return 30;
  }

  @Override
  public boolean isSteppable() {
    return true;
  }

  @Override
  public boolean canStepOnUnsteppableCells() {
    return false;
  }

}